#include <head.h>

void AMGONE(const char *str, int len) 
{  
    int num_1 = 0;  // 数字数  
    int num_2 = 0;  // 其他字符数  
    int num_3 = 0;  // 字母数  
    int num_4 = 0;  // 行数 
  
    for (size_t i = 0; i < len; i++) 
    {  
        if (str[i] == ' ') 
        {  
            
        } 
        else if (str[i] >= '0' && str[i] <= '9') 
        {  
            num_1++;  
        } else if (str[i] == '\n') 
        {  
            num_4++;  
        } else if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')) 
        {  
            num_3++;  
        } else 
        {  
            num_2++;  
        }  
    }  
    printf("行数:%d , 字符数:%d , 数字数:%d , 字母数:%d\n", num_4, len - (num_1 + num_2 + num_3 + num_4), num_1, num_3);  
}  
  
int main(int argc, char const *argv[]) 
{  
    int fd = open("time.txt", O_RDONLY);  
    if (fd == -1) 
    {  
        perror("Error opening file");  
        return 1;  
    }    
    lseek(fd, 0, SEEK_SET);  
    char read_buf[1028];  
    ssize_t bytes_read = read(fd, read_buf, sizeof(read_buf) - 1);  
    if (bytes_read == -1) 
    {  
        perror("Error reading file");  
        close(fd);  
        return 1;  
    }  
    read_buf[bytes_read] = '\0'; 
    AMGONE(read_buf, (int)bytes_read);  
    close(fd);  
    return 0;  
}